This invention relates to computers and, more particularly, to a computer circuit for preempting a Direct Memory Access (DMA) or other data transfer operation.
A computer system typically includes a plurality of controllers for transferring data throughout the system. Each of these controllers is designed to transfer data in a unique way; for example, one controller may handle direct memory access (DMA) operations, while another handles selected slave operations. To control the flow of data, each of these controllers must have access to certain "system resources" within the system, such as a particular bus or bus interface circuit. Since some of these resources must be shared by more than one controller, the operations performed by each one of the controllers are, in most cases, mutually exclusive. Consequently, when two controllers have data to transfer through the system at the same time, something must resolve the contention between the two controllers.
Since DMA operations typically transfer large amounts of data and involve use of the system resources for extended periods of time, the DMA operation may be preempted to allow another controller temporary access to the system resources. When the preempting controller completes its data transfer operation, control of the resources is returned to the DMA controller and, after re-establishing ownership of the system resources, DMA operations continue at the point they were interrupted. The problem with this preemption scheme, however, is that additional time is required by the DMA controller to re-establish its control of the system resources after the preempting controller has completed its operations. It would be desirable, however, if the preemption could be "transparent" to the DMA such that when the preempting controller has completed its operation, control is returned to the DMA controller which continues its DMA operation without having to re-establish ownership resources. Accordingly, the invention described below is a circuit that permits transparent preemption of DMA or other data transfer operations.